package com.example.springboot01.event;

import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.Date;

/**
 * @Description : 事件发布类
 * Created by cyd on 2021-04-30 23:35:01
 */
@Component
public class DemoPublisher {
    /**
     * 注入ApplicationContext用于发布事件
     * 使用其publishEvent方法来发布
     */
    @Resource
    ApplicationContext context;

    /**
     * 发布器对象中，发布事件，供监听器监听
     * this 指的是context对象
     * <p>
     * 只有context的publishEvent才能发布事件，自己手动new的event不行，监听器监听不到；
     *
     * @param msg  事件对象的参数1
     * @param date 事件对象的参数2
     */
    public void say(String msg, Date date) {
        //
        context.publishEvent(new DemoEvent(this, msg, date));
    }

}
